#ifndef CITY_H_
#define CITY_H_

#include <vector>
#include <pcl/point_types.h>


using namespace std;

class Building;

class City
{
public:
	City()
	{
		_cityname = "(city name here)";
	}

	City(string mycityname)
	{
		_cityname = mycityname;
	}
	
	std::string GetName()
	{
		return _cityname;
	}

	Eigen::Vector3f getEnvLower()
	{
		return _envLower;
	}


	Eigen::Vector3f getEnvUpper()
	{
		return _envUpper;
	}


	vector<Building*> getBuildings()
	{
		return _buildings;
	}

	void setEnvelope(Eigen::Vector3f lower, Eigen::Vector3f upper)
	{
		_envLower = lower;
		_envUpper = upper;
	}

	void addBuilding(Building *b)
	{
		_buildings.push_back(b);
	}

private:

	std::string _cityname;

	Eigen::Vector3f _envLower;
	Eigen::Vector3f _envUpper;

	vector<Building*> _buildings; //has a list of buildings
	
	Eigen::Vector4f _ground; //via hessche normalform

};



#endif